package com.seiya.cookit;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.seiya.cookit.domain.Glosario;
import com.seiya.cookit.helper.UtilDB;

public class GlosarioActivity extends ListActivity {

	private EditText autoc_globuscador;
	private ArrayList<Glosario> lstGlosario;
	private ArrayList<Glosario> lstTemporal;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_glosario);
		lstGlosario = new ArrayList<Glosario>();
		lstTemporal = new ArrayList<Glosario>();
		autoc_globuscador = (EditText) findViewById(R.id.autoc_globuscador);

		/**************************************** INTERACTUAMOS CON LA BD SQLITE ***************/

		UtilDB db = UtilDB.GetUtilDb(getBaseContext());

		// recuperamos los datos de la BD local
		db.openDataBase();
		String sql = "SELECT * FROM glosario";
		Cursor cursor = db.getDataBase().rawQuery(sql, null);

		if (cursor.moveToFirst()) {
			do {
				Glosario glosario = new Glosario();
				glosario.id = cursor.getInt(cursor.getColumnIndex("in_id_ing"));
				glosario.nombre = cursor.getString(cursor
						.getColumnIndex("va_nombre_ing"));
				glosario.descripcion = cursor.getString(cursor
						.getColumnIndex("va_descrip_ing"));
				// guaradamos los datos en una lista
				lstGlosario.add(glosario);
			} while (cursor.moveToNext());
			cursor.close();
		}
		db.close();

		// asociamos la lista de nombre hacia el ListView

		setListAdapter(new GlosarioAdapter(lstGlosario));

		/**************************************** FILTRO PARA EL GLOSARIO ******************************/
		autoc_globuscador.addTextChangedListener(new TextWatcher() {

			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			public void afterTextChanged(Editable s) {
			}

			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				String filtro = autoc_globuscador.getText().toString()
						.toLowerCase(Locale.getDefault());
				lstTemporal.clear();

				for (int i = 0; i < lstGlosario.size(); i++) {
					Glosario glosario = lstGlosario.get(i);
					String cadena = glosario.nombre;
					if (cadena.toLowerCase(Locale.getDefault()).contains(
							filtro.toLowerCase(Locale.getDefault()))) {
						lstTemporal.add(glosario);
					}
				}
				setListAdapter(new GlosarioAdapter(lstTemporal));
			}
		});
		/***********************************************************************************************/

	}

	private class GlosarioAdapter extends ArrayAdapter<Glosario> {

		public GlosarioAdapter(List<Glosario> items) {
			super(GlosarioActivity.this, R.layout.list_row_catalogo, items);
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {

			// obtenemos el servicio de carga de layout del sistema
			LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

			// cargamos cada fila con el layout personalizado
			final View fila = layoutInflater.inflate(
					R.layout.list_row_catalogo, parent, false);

			TextView text = (TextView) fila.findViewById(R.id.option_text);
			ImageView image = (ImageView) fila.findViewById(R.id.option_icon);

			image.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.cookbook));

			Glosario item = getItem(position);
			text.setText(item.nombre);

			return fila;
		}
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		super.onListItemClick(l, v, position, id);
		Glosario glosario = lstGlosario.get(position);

		Intent intent = new Intent(getBaseContext(), DescripcionActivity.class);
		intent.putExtra("nombre", glosario.nombre);
		intent.putExtra("descripcion", glosario.descripcion);
		startActivity(intent);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_inicio:
			Intent intencion = new Intent(getBaseContext(), MainActivity.class);
			startActivity(intencion);
			break;
		case R.id.menu_glosario:
			Intent intencion2 = new Intent(getBaseContext(),
					GlosarioActivity.class);
			startActivity(intencion2);
			break;
		case R.id.menu_mrecetas:
			Intent intencion3 = new Intent(getBaseContext(),
					LoginActivity.class);
			startActivity(intencion3);
			break;
		case R.id.menu_recetas:
			Intent intencion4 = new Intent(getBaseContext(),
					RecetasActivity.class);
			startActivity(intencion4);
			break;
		default:
			break;
		}
		return false;
	}
}
